[LeetCode 78]Subsets 子集
Problem description:
Given a set of distinct integers, nums, return all possible subsets (the power set).
Note: The solution set must not contain duplicate subsets.
Example:
1 | Input: nums = [1,2,3] |
问题描述:
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。
说明:解集不能包含重复的子集。
示例:
1 | 输入: nums = [1,2,3] |
Solution:
Solution 1: 一个集合有n个元素,则其有2n的子集。
列出从0到2n-1的所有二进制,0表示不取对应元素,1表示取对应元素,即可得出所有子集。
1 | 1 2 3 Subset |
Code:
1 | import java.util.ArrayList; |
Solution 2:
深度优先算法,由于原集合每一个数字只有两种状态,要么存在,要么不存在,那么在构造子集时就有选择和不选择两种情况,所以可以构造一棵二叉树,左子树表示选择该元素,右子树表示不选择,最终的叶节点就是所有子集合,树的结构如下:
1 | [] |
Code:
1 | class Solution { |